import cv2
import numpy as np

# 读入图像
image = cv2.imread("images/color_recognition/polygon.jpg")

# 显示图像
cv2.imshow('polygon', image)

# 设置hsv范围参数
lower = np.array([0, 0, 147], dtype=np.uint8)
upper = np.array([45, 43, 255], dtype=np.uint8)

# 生成二值图并显示
mask = cv2.inRange(image, lower, upper)
cv2.imshow("hsv", mask)

# 寻找轮廓
_, contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 直接画出寻找到的轮廓
# cv2.drawContours(image, contours, -1, (0, 255, 0), 3)


# 根据寻找到的轮廓数组，使用boundingRect画出矩形，并写上颜色
for c in contours:
    # 矩形逼近
    x, y, w, h = cv2.boundingRect(c)
    # 画出矩形
    cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 3)

    # 写字
    # 图像，文字内容， 坐标 ，字体，大小，颜色，字体厚度
    cv2.putText(image, 'Red', (x+w+10, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 0), 2)

# 显示处理后的图像
cv2.imshow("draw", image)

# 保存图像
# cv2.imwrite("images/results/color_detection.jpg", image)

# 等待按下键盘任意键退出
cv2.waitKey(0)

cv2.destroyAllWindows()